
const db = wx.cloud.database()
const _ = db.command
const $ = db.command.aggregate
const app = getApp()


const getContest = async(params)=>{
  var id = params.id
  return new Promise((reslove,reject)=>{
    db.collection('contest').doc(id).get()
    .then(res=>{
      console.log(res)
      reslove(res)
    })
  })
}

const publish = async (params) =>{
  //console.log(params)
  return new Promise((reslove,reject)=>{
    wx.cloud.callFunction({
      name:'contest',
      data:{action:'publish',data:{...params}}
    }).then(res=>{

      reslove(res.result)
    })
    .catch(err=>{
      reject(err)
    })

  });
}

const list = async (params) =>{
  var {type,status} = params
  return new Promise((reslove,reject)=>{
    wx.cloud.callFunction({
      name:'contest',
      data:{action:'list',type:type,status:status}
    }).then(res=>{
      reslove(res.result)
    }).catch(err=>{
      reject(err)
    })
  })
}

const switchList = async (params) =>{
  
  return new Promise((reslove,reject)=>{
    wx.cloud.callFunction({
      name:'contest',
      data:{action:'switchList'}
    }).then(res=>{
      reslove(res.result)
    }).catch(err=>{
      reject(err)
    })
  })
}

const del = async (params) =>{
  var {id} = params
  console.log(id)
  return new Promise((reslove,reject)=>{
    wx.cloud.callFunction({
      name:'contest',
      data:{action:'del',id}
    }).then(res=>{
      reslove(res.result)
    })
    .catch(err=>{
      reject(err)
    })
  })
}

const edit = async(params)=>{
  var id = params.id
  return new Promise((reslove,reject)=>{
    wx.cloud.callFunction({
      name:'contest',
      data:{
        action:'edit',data:{...params.contest},id
      }
    }).then(res=>{
      reslove(res)
    })
    .catch(err=>{
      reject(err)
    })
  })
}

const search = (params = {}) => {
  const { pageNumber = 1, pageSize = 10, key = '' } = params
  return new Promise((resolve, reject) => {
    db.collection('contest')
    .where({name: db.RegExp({regexp: key})})
    .skip((pageNumber-1) * pageSize)
    .limit(pageSize)
    .get({success: res => {
      resolve(res)
    }, fail: reject})
  });
}

export default {
  publish,
  list,
  del,
  edit,
  search,
  switchList,
  getContest

}